class Animal {
    public final int CONSTANT = 100;
    public int value;

    final int test(int a, int b) {
        return a + b;
    } 
}

class Dog extends Animal {

    // 错误：final修饰的方法不能被重写
//    @Override
//    public int test(int a, int b) {
//        return a + b;
//    }
    
}

public class Task {

    public static void main(String[] args) {
        final int[] array = {1, 2, 3};
        array[1] = 10; // 可以更改数组中的元素的值
        // array = new int[] {4, 5, 6}; // 错误：不能更改 array 的引用

        final int number = 5;
        // number = 6; // 错误：不能更改 number 的值

        final String str = "Hello";
        // str = "World"; // 错误：不能更改 str 的值

        final Animal test = new Dog();
        test.value = 10; // 可以更改对象的非 final 属性
        // test.CONSTANT = 123; // 错误：不能更改对象final修饰的属性
        // test = new Dog(); // 错误：不能更改 final 类型变量的引用
    }
}
